"""
zip
"""
list01 = ["宋江","扈三娘","卢俊义"]
list02 = [32,18,31]
list03 = ["男","女","男"]

# zip 可以将多个可迭代对象组合成元组   列可以转置成行
for item in zip(list01,list02,list03):
    print(item)


# 矩阵转置  列变行
list_map = [
    [2,0,0,2],  # list_map[0]
    [3,0,0,3],  # list_map[1]
    [5,1,2,9],  # list_map[2]
    [7,4,2,8],  # list_map[3]
]
print("-------------------------------")
"""
 [2,3,5,7],
 [0,0,1,4]
 [0,0,2,2]
 [2,3,9,8]
"""

for item in zip(list_map[0],list_map[1],list_map[2],list_map[3]):
    print(item) # 此处item 是个元组，我们需要将其转换成列表

print("==================================")

for item in zip(list_map[0],list_map[1],list_map[2],list_map[3]):
    print(list(item))

print("=============================")

list_new = []
for item in zip(list_map[0],list_map[1],list_map[2],list_map[3]):
    list_new.append(list(item))
print(list_new)

print("===================================")
list_new2 = []
# 无论你的列表有多少行，通过*都可以传递给zip
for item in zip(*list_map):
    list_new2.append(list(item))
print(list_new2)

print("*******************************************")
# 列表推导式
list_new3 = [list(item) for item in zip(*list_map)]
print(list_new3)

# 列表推导式 ==> 生成器表达式
# 生成器表达式：用推导式形式创建生成器对象，就是生成器表达式
# 变量 = (表达式 for 变量 in 可迭代对象 if 判断条件)
list_new4 = (list(item) for item in zip(*list_map))
print(list_new4) # 生成器对象 <generator object <genexpr> at 0x0000026CE2B023B0>
for item in list_new4:
    print(item)